#include "serverwidget.h"
#include "ui_serverwidget.h"

ServerWidget::ServerWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::ServerWidget)
{
    ui->setupUi(this);

    tcpserver=NULL;
    tcpsocket=NULL;

    //监听套接字
    tcpserver =new QTcpServer(this);  //指定父对象，可以让其自动回收空间

    tcpserver->listen(QHostAddress::Any,8888); //QHostAddress::Any当前网卡的所有ip地址   端口号：8888

    setWindowTitle("服务器：8888");

    connect(tcpserver,&QTcpServer::newConnection,[=](){

        //取出建立好连接的套接字
        tcpsocket=tcpserver->nextPendingConnection();

        //获取对方的IP和端口
        QString ip=tcpsocket->peerAddress().toString();

        qint16 port=tcpsocket->peerPort();
        QString temp=QString("[%1:%2]:成功连接").arg(ip).arg(port);


        //将连接信息发送
        ui->readtext->setText(temp);


        //内部连接好取出套接字后才能使用
        connect(tcpsocket,&QTcpSocket::readyRead,[=](){
            //从通信套接字中取出内容
           QByteArray array= tcpsocket->readAll();

           ui->readtext->append(array);

        });


    });



}

ServerWidget::~ServerWidget()
{
    delete ui;
}


void ServerWidget::on_sendButton_clicked()
{
    if(tcpsocket==NULL) return;

    //获取编辑区内容
    QString str =ui->writetext->toPlainText();

    //给对方发送数据，用通信套接字
    tcpsocket->write(str.toUtf8().data());//数据转转换问数据
}


void ServerWidget::on_closeButton_clicked()
{
    if(tcpsocket==NULL) return;
    //主动和客户端断开连接
    tcpsocket->disconnectFromHost();
    ui->readtext->setText("和客户端断开连接");
    tcpsocket->close();
    tcpsocket=NULL;
}

